/*
 /*
 * TARRY DULCES 
 * MAURICIO ALAN GONZALEZ RAZO
 * DESARROLLADOR JAVA
 * MODULO DE TPV 2014
 */
package Servlets;

import Estructuras.Principales.TPVPrincipalDTO;
import Herramientas.FileEngine;
import Herramientas.Herramientas;
import Herramientas.RedireccionPOPUP;
import TPVTarryDAOS.CatalogoProductosDAO;
import TPVTarryDAOS.ClavesAdminDAO;
import TPVTarryDAOS.ExistenciasTiendaDAO;
import TPVTarryDAOS.ListaItemsDAO;
import TPVTarryDAOS.ParametrosVentaDAO;
import TPVTarryDAOS.TPVCalculosDAO;
import TPVTarryDTOS.CatalogoProductosDTO;
import TPVTarryDTOS.ExistenciasTiendaDTO;
import TPVTarryDTOS.ItemListaDTO;
import TPVTarryDTOS.ParametrosVentaDTO;
import TPVTarryDTOS.TicketDTO;
import TarryDAOS.TarryProductosDAO;
import TarryDTOS.TarryProductosDTO;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Vector;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

/**
 *
 * @author Mauricio Alan
 */
@WebServlet(name = "TarryTPV", urlPatterns = {"/TarryTPV"})
public class TarryTPV extends HttpServlet {

    /**
     * ALAN GONZALEZ CABECERA CONTROLADORA DEL SEVLET
     *
     * @param request
     * @param response
     * @throws ServletException
     * @throws IOException
     */
    protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        try {
            String action = request.getParameter("action");
            HttpSession session = request.getSession();

// TERMINAL TPV
            if (action.equals("start")) {
                this.startTPV(request, response, session);
            } else if (action.equals("entreArticulo")) {
                this.entreArticulo(request, response, session);
            } else if (action.equals("editaPiezasArticulo")) {
                this.editaPiezasArticulo(request, response, session);
            } else if (action.equals("cerrarVentaPopUp")) {
                this.cerrarVentaPopUp(request, response, session);
            } else if (action.equals("cerrarVenta")) {
                this.cerrarVenta(request, response, session);
            } else if (action.equals("cancelaItem")) {
                this.cancelaItem(request, response, session);
            } else if (action.equals("itemCancelado")) {
                this.itemCancelado(request, response, session);
// CONFIGURACIONES
            } else if (action.equals("loginConfigTPV")) {
                this.loginConfigTPV(request, response, session);
            } else if (action.equals("adminConfiguraciones")) {
                this.adminConfiguraciones(request, response, session);
            } else if (action.equals("adminCatalogo")) {
                this.adminCatalogo(request, response, session);
// CONTROLADORES DE FAMILIAS
            } else if (action.equals("nuevaFamilia")) {
                this.nuevaFamilia(request, response, session);
            } else if (action.equals("nuevaFamiliaRequest")) {
                this.nuevaFamiliaRequest(request, response, session);
            } else if (action.equals("editaFamilia")) {
                this.editaFamilia(request, response, session);
            } else if (action.equals("editaFamiliaRequest")) {
                this.editaFamiliaRequest(request, response, session);
            } else if (action.equals("eliminaFamilia")) {
                this.eliminaFamilia(request, response, session);
// CONTROLADORES DE CATEGORIAS
            } else if (action.equals("categoriasFamilia")) {
                this.categoriasFamilia(request, response, session);
            } else if (action.equals("nuevaCategoria")) {
                this.nuevaCategoria(request, response, session);
            } else if (action.equals("nuevaCategoriaRequest")) {
                this.nuevaCategoriaRequest(request, response, session);
            } else if (action.equals("editaCategoria")) {
                this.editaCategoria(request, response, session);
            } else if (action.equals("editaCategoriaRequest")) {
                this.editaCategoriaRequest(request, response, session);
            } else if (action.equals("eliminaCategoria")) {
                this.eliminaCategoria(request, response, session);
// CONTROLADORES DE PRODUCTOS
            } else if (action.equals("productosCategoria")) {
                this.productosCategoria(request, response, session);
            } else if (action.equals("nuevoProducto")) {
                this.nuevoProducto(request, response, session);
            } else if (action.equals("editaProducto")) {
                this.editaProducto(request, response, session);
            } else if (action.equals("eliminaProducto")) {
                this.eliminaProducto(request, response, session);
                //--
            } else {
                System.out.println("#### EL SERVICIO NO CONICIDE ####");
            }
        } finally {
            out.close();
        }
    }

    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /**
     * Handles the HTTP <code>GET</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Handles the HTTP <code>POST</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Returns a short description of the servlet.
     *
     * @return a String containing servlet description
     */
    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>

    /**
     * ALAN GONZALEZ INICIALIZO EL TERMINAL PUNTO DE VENTA
     *Ö
     * @param request
     * @param response
     */
    public void startTPV(HttpServletRequest request, HttpServletResponse response, HttpSession session) {
        Herramientas herramientas = new Herramientas();
        TPVPrincipalDTO principal = new TPVPrincipalDTO();
        Vector itemsVenta = new Vector();
// GENERO UN FOLIO DE TICKET        
        int folioTicket = herramientas.enteroAleatorio(5);
// SUBO A SESION EL FOLIO DE TICKET
        session.setAttribute("folioTicket", folioTicket);
// LIMPIO LA LISTA DE ITEMS
        ListaItemsDAO listaItemsDAO = new ListaItemsDAO();
        listaItemsDAO.limpiarListaItems(); 
// CARGO ITEMS DE VENTA
        itemsVenta = listaItemsDAO.itemsListaVenta(folioTicket);
        principal.setItemsVenta(itemsVenta);
        session.setAttribute("principalTPV", principal);
        RequestDispatcher d = request.getRequestDispatcher("TPV/tpvMain.jsp");
        try {
            d.forward(request, response);
        } catch (ServletException ex) {
            Logger.getLogger(TarryTPV.class.getName()).log(Level.SEVERE, null, ex);
        } catch (IOException ex) {
            Logger.getLogger(TarryTPV.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    /**
     * ALAN GONZALEZ SERVICIO QUE.. 1.- GENERA UN NUMERO ALEATORIO PARA
     * IDEINTIFICAR LA VENTA (CLAVE PRIMARIA NO AUTO INCREMENTAL) 2.- RECUPERA
     * EL CODIGO DE BARRAS 3.- BUSCA ESTE IDEINTIFICADOR EN EL CATALOGO Y EN LA
     * CONFIGURACION DE PRECIOS 4.- ESCRIBE TODO EL OBJETO DE TRANSFERENCIA EN
     * TABLA DE ITEMS_VENTAöÖÖ
     *
     * @param request
     * @param response
     */
    public void entreArticulo(HttpServletRequest request, HttpServletResponse response, HttpSession session) {
        TPVPrincipalDTO principal = new TPVPrincipalDTO();
        
        Vector itemsVenta = new Vector();
        Vector errores = new Vector();
// CB PRODUCTO
        String cbProducto = request.getParameter("cb");
// FOLIO TICKET DE SESION
        int folioTicket = (Integer) session.getAttribute("folioTicket");
        TarryProductosDAO tarryProductosDAO = new TarryProductosDAO();
        TarryProductosDTO tarryProductosDTO = new TarryProductosDTO();
        ParametrosVentaDAO parametrosVentaDAO = new ParametrosVentaDAO();
        ParametrosVentaDTO parametrosVentaDTO = new ParametrosVentaDTO();
        
        ExistenciasTiendaDAO existenciasTiendaDAO = new ExistenciasTiendaDAO();
        ExistenciasTiendaDTO existenciasTiendaDTO = new ExistenciasTiendaDTO();
        ListaItemsDAO listaItemsDAO = new ListaItemsDAO();
        ItemListaDTO itemListaDTO = new ItemListaDTO();

        // 1.- BUSQUEDA DEL ITEM DENTRO DEL CATALOGO D
        Boolean banderaExisteProducto = tarryProductosDAO.existeProductoCatalogo(cbProducto);
        if (banderaExisteProducto == false) {
            errores.add("NO EXISTE EL ARTIGULO DENTRO DEL CATALOGO");
        }
        
        if (errores.size() == 0) {

// SE OBTIENE DESCRIPCION DEL CATALOGO
            tarryProductosDTO = tarryProductosDAO.unProducto(cbProducto);
// SE OBTIENEN LOS PARAMTROS DE VENTA
            parametrosVentaDTO = parametrosVentaDAO.parametroVentaProducto(cbProducto);
// SE OBTIENE EL NUMERO DE EXISTENCIA
            existenciasTiendaDTO = existenciasTiendaDAO.existenciaProductoTiendaDTO(cbProducto);
// SE FORMA EL OBJETO DE TRANSFERENCIA Y SE AGREGA EN EL VECTOR
            itemListaDTO.setId(0);
            itemListaDTO.setIdItem(cbProducto);
            itemListaDTO.setDescripcion(tarryProductosDTO.getNombre().toString() + tarryProductosDTO.getDescripcion().toString());
            itemListaDTO.setIdTicket(folioTicket); // NUMERO ALEATORIODE TICKET
            itemListaDTO.setCantidad(1); // NUMERO DE UNIDADES POR DEFAULT
            itemListaDTO.setPrecioPublico(parametrosVentaDTO.getPrecioPublico());
// CALCULO DEL SUBTOTAL DEL ITEM
            itemListaDTO.setSubTotal((itemListaDTO.getCantidad()) * (parametrosVentaDTO.getPrecioPublico()));
// SE ESCRIBE EN LA BASE DE DATOS
            listaItemsDAO.agregaItem(itemListaDTO);
// CARGO EL VECTOR CON ITEMS DE LA VENTA EN CURSO 
            itemsVenta = listaItemsDAO.itemsListaVenta(folioTicket);
// CALCULO DEL TOTAL DE VENTA
            double totalVenta = listaItemsDAO.totalVenta(folioTicket);
// SUBIDA DE DATOS E ITEMS A PRINCIPAL
            principal.setFolioTicket(folioTicket);
            principal.setTotalVenta(totalVenta);
            principal.setItemsVenta(itemsVenta);

// SUBIDA DE PRINCIPAL A SESION
            session.setAttribute("principalTPV", principal);
            RequestDispatcher d = request.getRequestDispatcher("TPV/tpvMain.jsp");
            try {
                d.forward(request, response);
            } catch (ServletException ex) {
                Logger.getLogger(TarryTPV.class.getName()).log(Level.SEVERE, null, ex);
            } catch (IOException ex) {
                Logger.getLogger(TarryTPV.class.getName()).log(Level.SEVERE, null, ex);
            }
            
        } else if (errores.size() > 0) {
            // CARGO EL VECTOR CON ITEMS DE LA VENTA EN CURSO 
            itemsVenta = listaItemsDAO.itemsListaVenta(folioTicket);
            principal.setItemsVenta(itemsVenta);
            principal.setErrores(errores);
            principal.setnErrores(errores.size());
            session.setAttribute("principalTPV", principal);
            RequestDispatcher d = request.getRequestDispatcher("TPV/tpvMain.jsp");
            try {
                d.forward(request, response);
            } catch (ServletException ex) {
                Logger.getLogger(TarryTPV.class.getName()).log(Level.SEVERE, null, ex);
            } catch (IOException ex) {
                Logger.getLogger(TarryTPV.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
    }

    /**
     * ALAN GONZALEZ SERVICIO PARA LA EDICION DE PIEZAS DE UN ARTICULO
     *
     * @param request
     * @param response
     */
    public void editaPiezasArticulo(HttpServletRequest request, HttpServletResponse response, HttpSession session) {
        TPVPrincipalDTO principal = (TPVPrincipalDTO) session.getAttribute("principalTPV");
        Vector itemsVenta = new Vector();
        Vector itemsSesion = principal.getItemsVenta();
        ListaItemsDAO listaItemsDAO = new ListaItemsDAO();
// SE REALIZA LA EDICION DE TODA LA MATRIZ
        int aux = 1;
        for (aux = 1; aux <= itemsSesion.size(); aux++) {
            int idArticulo = Integer.parseInt(request.getParameter("id_articulo_" + aux));
            double cantidad = Double.parseDouble(request.getParameter("cantidad_item_" + idArticulo));
            ItemListaDTO itemListaDTO = new ItemListaDTO();
            listaItemsDAO.editaNumeroPiezasItem(idArticulo, cantidad);
        }
// CARGANDO NUEVO VECTOR DE ITEMS DE VENTA       
        itemsVenta = listaItemsDAO.itemsListaVenta(principal.getFolioTicket());
        principal.setItemsVenta(itemsVenta);
        principal.setTotalVenta(listaItemsDAO.totalVenta(principal.getFolioTicket()));
// SUBIENDO NUEVA SESION PARA ACTUALIZAR LA VISTA 
        session.setAttribute("principalTPV", principal);
// REDIRECCIONANDO AL JSP
        RequestDispatcher d = request.getRequestDispatcher("TPV/tpvMain.jsp");
        try {
            d.forward(request, response);
        } catch (ServletException ex) {
            Logger.getLogger(TarryTPV.class.getName()).log(Level.SEVERE, null, ex);
        } catch (IOException ex) {
            Logger.getLogger(TarryTPV.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    /**
     * ALAN GONZALEZ SERVICIO PARA LA APERTURA DEL POP UP PARA INGRESAR TIPO DE
     * PAGO MONTO RECIBIDO
     *
     * @param request
     * @param response
     */
    public void cerrarVentaPopUp(HttpServletRequest request, HttpServletResponse response, HttpSession session) {
        int index = Integer.parseInt(request.getParameter("index"));
        switch (index) {
            case 1: // MUESTRA EL JSP DE RECEPCION DE MONTO Y TIPO DE PAGO
                RequestDispatcher d = request.getRequestDispatcher("TPV/cierraVenta.jsp");
                try {
                    d.forward(request, response);
                } catch (ServletException ex) {
                    Logger.getLogger(TarryTPV.class.getName()).log(Level.SEVERE, null, ex);
                } catch (IOException ex) {
                    Logger.getLogger(TarryTPV.class.getName()).log(Level.SEVERE, null, ex);
                }
                break;
            case 2: // RECIBE DATOS Y LOS INTEGRA EN EL PRINCIPAL
                TPVPrincipalDTO principal = (TPVPrincipalDTO) session.getAttribute("principalTPV");
                TicketDTO ticket = new TicketDTO();
                
                double montoRecbido = Double.parseDouble(request.getParameter("montoRecibido"));
                int tipoPago = Integer.parseInt(request.getParameter("tipoPago"));
                ticket.setMontoRecibido(montoRecbido);
                ticket.setTipoPago(tipoPago);
                principal.setTicket(ticket);
                session.setAttribute("principalTPV", principal);
                RedireccionPOPUP redireccion = new RedireccionPOPUP();
                redireccion.setServicio("./TarryTPV?action=cerrarVenta");
                session.setAttribute("sistema", redireccion);
                RequestDispatcher g = request.getRequestDispatcher("./loading.jsp");
                try {
                    g.forward(request, response);
                } catch (ServletException ex) {
                    Logger.getLogger(TarryTPV.class.getName()).log(Level.SEVERE, null, ex);
                } catch (IOException ex) {
                    Logger.getLogger(TarryTPV.class.getName()).log(Level.SEVERE, null, ex);
                }
                break;
        }
    }

    /**
     * ALAN GONZALEZ SERVICIO PARA : 1 .- CONSOLIDAR LA VENTA RECPECION DE
     * EFECTIVO Y CALCULO DE CAMBIO 2 .- DESCONTAR LAS PIEZAS DEL STOCK 3 .-
     * ACTUALIZAR MONTOS 4 .- EMITIR TICKET
     *
     * @param request
     * @param response
     */
    public void cerrarVenta(HttpServletRequest request, HttpServletResponse response, HttpSession session) {
        TPVPrincipalDTO principal = (TPVPrincipalDTO) session.getAttribute("principalTPV");
        FileEngine file = new FileEngine();
        ListaItemsDAO listaItemsDAO = new ListaItemsDAO();
        TicketDTO ticket = principal.getTicket();
        ticket.setIdTicket(principal.getFolioTicket());
        ticket.setItems(principal.getItemsVenta());
        ticket.setTotalventa(listaItemsDAO.totalVenta(principal.getFolioTicket()));
        TPVCalculosDAO calculos = new TPVCalculosDAO();
        ticket.setCambioDevolver(calculos.cambioDevolver(ticket.getMontoRecibido(), ticket.getTotalventa()));
        // CREANDO REPORTE
        file.ticketVenta(ticket);
        RequestDispatcher g = request.getRequestDispatcher("./TarryTPV?action=start");
        try {
            g.forward(request, response);
        } catch (ServletException ex) {
            Logger.getLogger(TarryTPV.class.getName()).log(Level.SEVERE, null, ex);
        } catch (IOException ex) {
            Logger.getLogger(TarryTPV.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    /**
     * ALAN GONZALEZ CANCELA UN ITEM DE LA LISTA DE COMPRAS
     *
     * @param request
     * @param response
     */
    public void cancelaItem(HttpServletRequest request, HttpServletResponse response, HttpSession session) {
        int index = Integer.parseInt(request.getParameter("index"));
        ListaItemsDAO listaItemsDAO = new ListaItemsDAO();
        switch (index) {
            case 1:// ABRE EL POP UP
                int idItemVenta = Integer.parseInt(request.getParameter("idItemVenta"));
                String enlaceItemBorrar = "./TarryTPV?action=cancelaItem&index=2&idItemVenta=" + idItemVenta;
                session.setAttribute("tarryServiceDeleteRecord", enlaceItemBorrar);
                RequestDispatcher g = request.getRequestDispatcher("./TPV/popUpAvisoEliminar.jsp");
                try {
                    g.forward(request, response);
                } catch (ServletException ex) {
                    Logger.getLogger(TarryTPV.class.getName()).log(Level.SEVERE, null, ex);
                } catch (IOException ex) {
                    Logger.getLogger(TarryTPV.class.getName()).log(Level.SEVERE, null, ex);
                }
                break;
            case 2:
                int idItemVentaOnDelete = Integer.parseInt(request.getParameter("idItemVenta"));
                listaItemsDAO.eliminarItemVenta(idItemVentaOnDelete);
                RedireccionPOPUP redireccion = new RedireccionPOPUP();
                redireccion.setServicio("./TarryTPV?action=itemCancelado");
                session.setAttribute("sistema", redireccion);
                RequestDispatcher h = request.getRequestDispatcher("./loading.jsp");
                try {
                    h.forward(request, response);
                } catch (ServletException ex) {
                    Logger.getLogger(TarryTPV.class.getName()).log(Level.SEVERE, null, ex);
                } catch (IOException ex) {
                    Logger.getLogger(TarryTPV.class.getName()).log(Level.SEVERE, null, ex);
                }
                break;
        }
    }

    /**
     * ALAN GONZALEZ SERVICIO PARA REDIRECCION DEL JSP PRINCIPAL DEL TPV CON LOS
     * ITEMS CORRECTOS DESPUES DE UNA CANCELACION DE ITEM EN VENTA
     *
     * @param request
     * @param response
     * @param session
     */
    public void itemCancelado(HttpServletRequest request, HttpServletResponse response, HttpSession session) {
        Herramientas herramientas = new Herramientas();
        TPVPrincipalDTO principal = (TPVPrincipalDTO) session.getAttribute("principalTPV");
        ListaItemsDAO listaItemsDAO = new ListaItemsDAO();
        Vector itemsVenta = new Vector();
        itemsVenta = listaItemsDAO.itemsListaVenta(principal.getFolioTicket());
        principal.setItemsVenta(itemsVenta);
        session.setAttribute("principalTPV", principal);
        RequestDispatcher h = request.getRequestDispatcher("TPV/tpvMain.jsp");
        try {
            h.forward(request, response);
        } catch (ServletException ex) {
            Logger.getLogger(TarryTPV.class.getName()).log(Level.SEVERE, null, ex);
        } catch (IOException ex) {
            Logger.getLogger(TarryTPV.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    /**
     * ALAN GONZALEZ SERVICIO PARA INGRESA CLAVE UNICA DE ADMINISTRADOR
     *
     * @param request
     * @param response
     * @param session
     */
    public void loginConfigTPV(HttpServletRequest request, HttpServletResponse response, HttpSession session) {
        TPVPrincipalDTO principal = (TPVPrincipalDTO) session.getAttribute("principalTPV");
        ClavesAdminDAO clavesAdminDAO = new ClavesAdminDAO();
        Herramientas herramientas = new Herramientas();
        int index = Integer.parseInt(request.getParameter("index"));
        Vector errores = new Vector();
        switch (index) {
            case 1:
                errores.clear();
                principal.setErrores(errores);
                principal.setnErrores(errores.size());
                // ABRO EL POPUP PARA SOLICITAR LA CONTRASEÑA UNICA DE ADMINISTRADOR
                session.setAttribute("principalTPV", principal);
                RequestDispatcher h = request.getRequestDispatcher("TPV/loginConfig.jsp");
                try {
                    h.forward(request, response);
                } catch (ServletException ex) {
                    Logger.getLogger(TarryTPV.class.getName()).log(Level.SEVERE, null, ex);
                } catch (IOException ex) {
                    Logger.getLogger(TarryTPV.class.getName()).log(Level.SEVERE, null, ex);
                }
                break;
            case 2:
                // 1.-RECIBO LA CONTRASELAÑA 2.- CARGO REDIRECCION 3.- CARGO JSP DE CARGA // orejas
                String claveConfiguracion = request.getParameter("claveAdmin");
                int banderaExisteAdmin = clavesAdminDAO.adminExiste(herramientas.encriptaMD5(claveConfiguracion));
                
                if (banderaExisteAdmin > 0) {
                    RedireccionPOPUP redireccion = new RedireccionPOPUP();
                    redireccion.setServicio("./TarryTPV?action=adminConfiguraciones");
                    session.setAttribute("sistema", redireccion);
                    RequestDispatcher g = request.getRequestDispatcher("./loading.jsp");
                    try {
                        g.forward(request, response);
                    } catch (ServletException ex) {
                        Logger.getLogger(TarryTPV.class.getName()).log(Level.SEVERE, null, ex);
                    } catch (IOException ex) {
                        Logger.getLogger(TarryTPV.class.getName()).log(Level.SEVERE, null, ex);
                    }
                    
                } else if (banderaExisteAdmin == 0) {
                    errores.add("Error en la clave de Administracion");
                    principal.setnErrores(errores.size());
                    principal.setErrores(errores);
                    session.setAttribute("principalTPV", principal);
                    RequestDispatcher a = request.getRequestDispatcher("TPV/loginConfig.jsp");
                    try {
                        a.forward(request, response);
                    } catch (ServletException ex) {
                        Logger.getLogger(TarryTPV.class.getName()).log(Level.SEVERE, null, ex);
                    } catch (IOException ex) {
                        Logger.getLogger(TarryTPV.class.getName()).log(Level.SEVERE, null, ex);
                    }
                }
                break;
        }
    }

    /**
     * ALAN GONZALEZ SERVICIO QUE MUESTRA EL ADMINISTRADOR DE CONFIGURACIONES
     *
     * @param request
     * @param response
     * @param session
     */
    public void adminConfiguraciones(HttpServletRequest request, HttpServletResponse response, HttpSession session) {
        RequestDispatcher h = request.getRequestDispatcher("TPV/adminConfiguracionesTPV.jsp");
        try {
            h.forward(request, response);
        } catch (ServletException ex) {
            Logger.getLogger(TarryTPV.class.getName()).log(Level.SEVERE, null, ex);
        } catch (IOException ex) {
            Logger.getLogger(TarryTPV.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    /**
     * ALAN GONZALEZ MUESTRA ADMINISTRADOR DONDE SE CREAN FAMILIAS DE PRODUCTOS
     *
     * @param request
     * @param response
     * @param session
     */
    public void adminCatalogo(HttpServletRequest request, HttpServletResponse response, HttpSession session) {
        
        TPVPrincipalDTO principal = new TPVPrincipalDTO();
        CatalogoProductosDAO catalogoProductosDAO = new CatalogoProductosDAO();
        principal.setFamilias(catalogoProductosDAO.todaFamilia());
        session.setAttribute("principalTPV", principal);
        RequestDispatcher h = request.getRequestDispatcher("TPV/adminProductos.jsp");
        try {
            h.forward(request, response);
        } catch (ServletException ex) {
            Logger.getLogger(TarryTPV.class.getName()).log(Level.SEVERE, null, ex);
        } catch (IOException ex) {
            Logger.getLogger(TarryTPV.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    /**
     * 
     * omar.rosalespsyce@gmail.com
     * ALAN GONZALEZ SERVICIO QUE MUESTRA LA INTERFAZ PARA UN NUEVA FAMILIA
     * --CATALOGO DE PRODUCTOS--
     *
     * @param request
     * @param response
     * @param session
     */
    public void nuevaFamilia(HttpServletRequest request, HttpServletResponse response, HttpSession session) {
        
        TPVPrincipalDTO principal = new TPVPrincipalDTO();
        principal.setAccionFormulario("./TarryTPV?action=nuevaFamiliaRequest");
        session.setAttribute("principalTPV", principal);
        RequestDispatcher h = request.getRequestDispatcher("TPV/nuevaFamilia.jsp");
        principal.setTituloVistaCatalogo("Nueva Familia");
        try {
            h.forward(request, response);
        } catch (ServletException ex) {
            Logger.getLogger(TarryTPV.class.getName()).log(Level.SEVERE, null, ex);
        } catch (IOException ex) {
            Logger.getLogger(TarryTPV.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    /**
     * ALAN GONZALEZ SERVICIO PARA RECUPERAR Y VALIDAR LOS DATOS DE LA INTERFAZ
     * DE NUEVA FAMILIA
     *
     * @param request
     * @param response
     * @param session
     */
    public void nuevaFamiliaRequest(HttpServletRequest request, HttpServletResponse response, HttpSession session) {
        
        TPVPrincipalDTO principal = new TPVPrincipalDTO();
        CatalogoProductosDAO catalogoProductosDAO = new CatalogoProductosDAO();
        CatalogoProductosDTO catalogoProductosDTO = new CatalogoProductosDTO();
        
        Vector errores = new Vector();
        
        String nombreFamilia = new String();
        String descripcionFamilia = new String();
        String observacionFamilia = new String();
        
        if (request.getParameter("nombreFamilia").toString().length() > 0) {
            nombreFamilia = request.getParameter("nombreFamilia").toString();
            catalogoProductosDTO.setNombre(nombreFamilia);
        } else {
            errores.add("El Campo Nombre Familia Es Obligatorio");
        }
        if (request.getParameter("descripcionFamilia").toString().length() > 0) {
            descripcionFamilia = request.getParameter("descripcionFamilia").toString();
            catalogoProductosDTO.setDescripcion(descripcionFamilia);
        } else {
            errores.add("El Campo Descripcion Familia Es Obligatorio");
        }
        if (request.getParameter("observacionFamilia").toString().length() > 0) {
            observacionFamilia = request.getParameter("observacionFamilia").toString();
            catalogoProductosDTO.setObservaciones(observacionFamilia);
        } else {
            observacionFamilia = "ND";
            catalogoProductosDTO.setObservaciones(observacionFamilia);
        }
        
        if (errores.size() > 0) {
            principal.setErrores(errores);
            principal.setnErrores(errores.size());
            session.setAttribute("principalTPV", principal);
            RequestDispatcher h = request.getRequestDispatcher("TPV/nuevaFamilia.jsp");
            try {
                h.forward(request, response);
            } catch (ServletException ex) {
                Logger.getLogger(TarryTPV.class.getName()).log(Level.SEVERE, null, ex);
            } catch (IOException ex) {
                Logger.getLogger(TarryTPV.class.getName()).log(Level.SEVERE, null, ex);
            }
        } else if (errores.size() == 0) {
            // CREA EL REGISTRO
            catalogoProductosDAO.nuevaFamilia(catalogoProductosDTO);
            // RECARGA EL SERVICION DE FAMILIAS
            RequestDispatcher h = request.getRequestDispatcher("./TarryTPV?action=adminCatalogo");
            try {
                h.forward(request, response);
            } catch (ServletException ex) {
                Logger.getLogger(TarryTPV.class.getName()).log(Level.SEVERE, null, ex);
            } catch (IOException ex) {
                Logger.getLogger(TarryTPV.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
    }

    /**
     * ALAN GONZALEZ SERVICIO QUE MUESTRA EL JSP DE NUEVA FAMILIA PARA SU
     * EDICION
     *
     * @param request
     * @param response
     * @param session
     */
    public void editaFamilia(HttpServletRequest request, HttpServletResponse response, HttpSession session) {
        int idFamilia = Integer.parseInt(request.getParameter("idFamilia"));
        CatalogoProductosDAO catalogoProductosDAO = new CatalogoProductosDAO();
        CatalogoProductosDTO catalogoProductosDTO = new CatalogoProductosDTO();
        TPVPrincipalDTO principal = (TPVPrincipalDTO) session.getAttribute("principalTPV");
        principal.setTituloVistaCatalogo("Edita Familia");
        principal.setIdFamiliaApuntador(idFamilia);
        principal.setAccionFormulario("./TarryTPV?action=editaFamiliaRequest");
        catalogoProductosDTO = catalogoProductosDAO.unaFamiliaPorId(idFamilia);
        principal.setCatalogoProductos(catalogoProductosDTO);
        session.setAttribute("principalTPV", principal);
        
        RequestDispatcher h = request.getRequestDispatcher("TPV/nuevaFamilia.jsp");
        try {
            h.forward(request, response);
        } catch (ServletException ex) {
            Logger.getLogger(TarryTPV.class.getName()).log(Level.SEVERE, null, ex);
        } catch (IOException ex) {
            Logger.getLogger(TarryTPV.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    /**
     * ALAN GONZALEZ SERVICIO PARA RECUPERAR DATOS EN LA EDICION DE LA FAMILIA
     *
     * @param request
     * @param response
     * @param session
     */
    public void editaFamiliaRequest(HttpServletRequest request, HttpServletResponse response, HttpSession session) {
        TPVPrincipalDTO principal = (TPVPrincipalDTO) session.getAttribute("principalTPV");
        CatalogoProductosDAO catalogoProductosDAO = new CatalogoProductosDAO();
        CatalogoProductosDTO catalogoProductosDTO = new CatalogoProductosDTO();
        
        Vector errores = new Vector();
        
        String nombreFamilia = new String();
        String descripcionFamilia = new String();
        String observacionFamilia = new String();
        
        if (request.getParameter("nombreFamilia").toString().length() > 0) {
            nombreFamilia = request.getParameter("nombreFamilia").toString();
            catalogoProductosDTO.setNombre(nombreFamilia);
        } else {
            errores.add("El Campo Nombre Familia Es Obligatorio");
        }
        if (request.getParameter("descripcionFamilia").toString().length() > 0) {
            descripcionFamilia = request.getParameter("descripcionFamilia").toString();
            catalogoProductosDTO.setDescripcion(descripcionFamilia);
        } else {
            errores.add("El Campo Descripcion Familia Es Obligatorio");
        }
        if (request.getParameter("observacionFamilia").toString().length() > 0) {
            observacionFamilia = request.getParameter("observacionFamilia").toString();
            catalogoProductosDTO.setObservaciones(observacionFamilia);
        } else {
            observacionFamilia = "ND";
            catalogoProductosDTO.setObservaciones(observacionFamilia);
        }
        
        if (errores.size() > 0) {
            principal.setErrores(errores);
            principal.setnErrores(errores.size());
            session.setAttribute("principalTPV", principal);
            RequestDispatcher h = request.getRequestDispatcher("TPV/nuevaFamilia.jsp");
            try {
                h.forward(request, response);
            } catch (ServletException ex) {
                Logger.getLogger(TarryTPV.class.getName()).log(Level.SEVERE, null, ex);
            } catch (IOException ex) {
                Logger.getLogger(TarryTPV.class.getName()).log(Level.SEVERE, null, ex);
            }
        } else if (errores.size() == 0) {
            // MODIFICA EL REGISTRO
            catalogoProductosDAO.editaFamilia(principal.getIdFamiliaApuntador(), catalogoProductosDTO);
            // RECARGA EL SERVICION DE FAMILIAS
            RequestDispatcher h = request.getRequestDispatcher("./TarryTPV?action=adminCatalogo");
            try {
                h.forward(request, response);
            } catch (ServletException ex) {
                Logger.getLogger(TarryTPV.class.getName()).log(Level.SEVERE, null, ex);
            } catch (IOException ex) {
                Logger.getLogger(TarryTPV.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
    }

    /**
     * ALAN GONZALEZ SERVICIO PARA ELIMINAR UNA FAMILIA CON SUS CATEGORIAS Y
     * PRODUCTOS
     *
     * @param request
     * @param response
     * @param session
     */
    public void eliminaFamilia(HttpServletRequest request, HttpServletResponse response, HttpSession session) {
        int idFamilia = Integer.parseInt(request.getParameter("idFamilia"));
        int index = Integer.parseInt(request.getParameter("index"));
        CatalogoProductosDAO catalogoProductosDAO = new CatalogoProductosDAO();
        switch (index) {
            case 1:
                String redireccion = "./TarryTPV?action=eliminaFamilia&index=2&idFamilia=" + idFamilia;
                session.setAttribute("tarryServiceDeleteRecord", redireccion);
                RequestDispatcher h = request.getRequestDispatcher("./TPV/popUpAvisoEliminar.jsp");
                try {
                    h.forward(request, response);
                } catch (ServletException ex) {
                    Logger.getLogger(TarryTPV.class.getName()).log(Level.SEVERE, null, ex);
                } catch (IOException ex) {
                    Logger.getLogger(TarryTPV.class.getName()).log(Level.SEVERE, null, ex);
                }
                break;
            case 2:

                // ELIMINAR LA FAMILIA
                catalogoProductosDAO.eliminaFamilia(idFamilia);
                // OBTENER LAS CATEGORIAS DE UNA FAMILIA
                Vector vCategorias = catalogoProductosDAO.categoriaDeUnaFamilia(idFamilia);
                // ELIMINAR LAS CATEGORIAS DE LA FAMILIA
                int vCategoriasAux = 0;
                for (vCategoriasAux = 0; vCategoriasAux < vCategorias.size(); vCategoriasAux++) {
                    int idCategoria = Integer.parseInt((String) vCategorias.elementAt(vCategoriasAux));
                    catalogoProductosDAO.eliminaCategoria(idCategoria);
                }
                //--

                RequestDispatcher i = request.getRequestDispatcher("./loading.jsp");
                try {
                    i.forward(request, response);
                } catch (ServletException ex) {
                    Logger.getLogger(TarryTPV.class.getName()).log(Level.SEVERE, null, ex);
                } catch (IOException ex) {
                    Logger.getLogger(TarryTPV.class.getName()).log(Level.SEVERE, null, ex);
                }
                break;
        }
    }

    /**
     * ALAN GONZALEZ SERVICIOS CATEGORIAS DE LA FAMILIA
     *
     * @param request
     * @param response
     * @param session
     */
    public void categoriasFamilia(HttpServletRequest request, HttpServletResponse response, HttpSession session) {
        
        TPVPrincipalDTO principal = (TPVPrincipalDTO) session.getAttribute("principalTPV");
        int idFamilia = Integer.parseInt(request.getParameter("idFamilia"));
        
        Vector categorias = new Vector();
        CatalogoProductosDAO catalogoProductosDAO = new CatalogoProductosDAO();
        CatalogoProductosDTO catalogoProductosDTO = new CatalogoProductosDTO();
        
        categorias = catalogoProductosDAO.todaCategoria(idFamilia);
        principal.setCategorias(categorias);
        principal.setIdFamiliaApuntador(idFamilia);
        
        session.setAttribute("principalTPV", principal);
        RequestDispatcher h = request.getRequestDispatcher("TPV/categorias.jsp");
        try {
            h.forward(request, response);
        } catch (ServletException ex) {
            Logger.getLogger(TarryTPV.class.getName()).log(Level.SEVERE, null, ex);
        } catch (IOException ex) {
            Logger.getLogger(TarryTPV.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    /**
     * ALAN GONZALEZ NUEVA CATEGORIA
     *
     * @param request
     * @param response
     * @param session
     */
    public void nuevaCategoria(HttpServletRequest request, HttpServletResponse response, HttpSession session) {
        int idFamiliaApuntador = Integer.parseInt(request.getParameter("idFamiliaApuntador"));
        TPVPrincipalDTO principal = (TPVPrincipalDTO) session.getAttribute("principalTPV");
        RequestDispatcher h = request.getRequestDispatcher("TPV/nuevaCategoria.jsp");
        String actionForm = "./TarryTPV?action=nuevaCategoriaRequest";
        principal.setIdFamiliaApuntador(idFamiliaApuntador);
        principal.setAccionFormulario(actionForm);
        principal.setTituloVistaCatalogo("Nueva Categoria");
        session.setAttribute("principalTPV", principal);
        try {
            h.forward(request, response);
        } catch (ServletException ex) {
            Logger.getLogger(TarryTPV.class.getName()).log(Level.SEVERE, null, ex);
        } catch (IOException ex) {
            Logger.getLogger(TarryTPV.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    /**
     * ALAN GONZALEZ SERVICIO PARA RECUPERAR DE LA INTERFAZ NUEVA CATEGORIA
     *
     * @param request
     * @param response
     * @param session
     */
    public void nuevaCategoriaRequest(HttpServletRequest request, HttpServletResponse response, HttpSession session) {
        TPVPrincipalDTO principal = (TPVPrincipalDTO) session.getAttribute("principalTPV");
        CatalogoProductosDAO catalogoProductosDAO = new CatalogoProductosDAO();
        CatalogoProductosDTO catalogoProductosDTO = new CatalogoProductosDTO();
        
        Vector errores = new Vector();
        
        String nombreFamilia = new String();
        String descripcionFamilia = new String();
        String observacionFamilia = new String();
        
        if (request.getParameter("nombreFamilia").toString().length() > 0) {
            nombreFamilia = request.getParameter("nombreFamilia").toString();
            catalogoProductosDTO.setNombre(nombreFamilia);
        } else {
            errores.add("El Campo Nombre Categoria Es Obligatorio");
        }
        if (request.getParameter("descripcionFamilia").toString().length() > 0) {
            descripcionFamilia = request.getParameter("descripcionFamilia").toString();
            catalogoProductosDTO.setDescripcion(descripcionFamilia);
        } else {
            errores.add("El Campo Descripcion Categoria Es Obligatorio");
        }
        if (request.getParameter("observacionFamilia").toString().length() > 0) {
            observacionFamilia = request.getParameter("observacionFamilia").toString();
            catalogoProductosDTO.setObservaciones(observacionFamilia);
        } else {
            observacionFamilia = "ND";
            catalogoProductosDTO.setObservaciones(observacionFamilia);
        }
        
        if (errores.size() > 0) {
            principal.setErrores(errores);
            principal.setnErrores(errores.size());
            session.setAttribute("principalTPV", principal);
            RequestDispatcher h = request.getRequestDispatcher("TPV/nuevaCategoria.jsp");
            try {
                h.forward(request, response);
            } catch (ServletException ex) {
                Logger.getLogger(TarryTPV.class.getName()).log(Level.SEVERE, null, ex);
            } catch (IOException ex) {
                Logger.getLogger(TarryTPV.class.getName()).log(Level.SEVERE, null, ex);
            }
        } else if (errores.size() == 0) {
            // MODIFICA EL REGISTRO
            catalogoProductosDAO.nuevaCategoria(principal.getIdFamiliaApuntador(), catalogoProductosDTO);
            // RECARGA EL SERVICIO DE LAS CATEGORIAS DE LA FAMILIA
            RequestDispatcher h = request.getRequestDispatcher("./TarryTPV?action=categoriasFamilia&idFamilia=" + principal.getIdFamiliaApuntador());
            try {
                h.forward(request, response);
            } catch (ServletException ex) {
                Logger.getLogger(TarryTPV.class.getName()).log(Level.SEVERE, null, ex);
            } catch (IOException ex) {
                Logger.getLogger(TarryTPV.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
    }

    /**
     * SERVICIO PARA EDITAR CATEGORIA
     *
     * @param request
     * @param response
     * @param session
     */
    public void editaCategoria(HttpServletRequest request, HttpServletResponse response, HttpSession session) {
        int idCategoria = Integer.parseInt(request.getParameter("idCategoria"));
        CatalogoProductosDAO catalogoProductosDAO = new CatalogoProductosDAO();
        CatalogoProductosDTO catalogoProductosDTO = new CatalogoProductosDTO();
        
        TPVPrincipalDTO principal = (TPVPrincipalDTO) session.getAttribute("principalTPV");
        principal.setTituloVistaCatalogo("Edita Categoria");
        principal.setIdFamiliaApuntador(idCategoria);
        principal.setAccionFormulario("./TarryTPV?action=editaCategoriaRequest");
        principal.setIdcategoriaApuntador(idCategoria);
        
        catalogoProductosDTO = catalogoProductosDAO.unaCategoriaPorId(idCategoria);
        
        principal.setCatalogoProductos(catalogoProductosDTO);
        session.setAttribute("principalTPV", principal);
        RequestDispatcher h = request.getRequestDispatcher("TPV/nuevaCategoria.jsp");
        try {
            h.forward(request, response);
        } catch (ServletException ex) {
            Logger.getLogger(TarryTPV.class.getName()).log(Level.SEVERE, null, ex);
        } catch (IOException ex) {
            Logger.getLogger(TarryTPV.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    /**
     * ALAN GONZALEZ SERVICIO PARA RECUPERAR DESDE LA INTERFAZ
     *
     * @param request
     * @param response
     * @param session
     */
    public void editaCategoriaRequest(HttpServletRequest request, HttpServletResponse response, HttpSession session) {
        TPVPrincipalDTO principal = (TPVPrincipalDTO) session.getAttribute("principalTPV");
        CatalogoProductosDAO catalogoProductosDAO = new CatalogoProductosDAO();
        CatalogoProductosDTO catalogoProductosDTO = new CatalogoProductosDTO();
        
        Vector errores = new Vector();
        
        String nombreFamilia = new String();
        String descripcionFamilia = new String();
        String observacionFamilia = new String();
        
        if (request.getParameter("nombreFamilia").toString().length() > 0) {
            nombreFamilia = request.getParameter("nombreFamilia").toString();
            catalogoProductosDTO.setNombre(nombreFamilia);
        } else {
            errores.add("El Campo Nombre Categoria Es Obligatorio");
        }
        if (request.getParameter("descripcionFamilia").toString().length() > 0) {
            descripcionFamilia = request.getParameter("descripcionFamilia").toString();
            catalogoProductosDTO.setDescripcion(descripcionFamilia);
        } else {
            errores.add("El Campo Descripcion Categoria Es Obligatorio");
        }
        if (request.getParameter("observacionFamilia").toString().length() > 0) {
            observacionFamilia = request.getParameter("observacionFamilia").toString();
            catalogoProductosDTO.setObservaciones(observacionFamilia);
        } else {
            observacionFamilia = "ND";
            catalogoProductosDTO.setObservaciones(observacionFamilia);
        }
        
        if (errores.size() > 0) {
            principal.setErrores(errores);
            principal.setnErrores(errores.size());
            session.setAttribute("principalTPV", principal);
            RequestDispatcher h = request.getRequestDispatcher("TPV/nuevaCategoria.jsp");
            try {
                h.forward(request, response);
            } catch (ServletException ex) {
                Logger.getLogger(TarryTPV.class.getName()).log(Level.SEVERE, null, ex);
            } catch (IOException ex) {
                Logger.getLogger(TarryTPV.class.getName()).log(Level.SEVERE, null, ex);
            }
        } else if (errores.size() == 0) {
// MODIFICA EL REGISTRO CATEGORIA
            catalogoProductosDAO.editaCategoria(principal.getIdcategoriaApuntador(), catalogoProductosDTO);

// RECARGA EL SERVICION DE CATEGROIAS DE ESA FAMILIA
            RequestDispatcher h = request.getRequestDispatcher("./TarryTPV?action=categoriasFamilia&idFamilia=" + principal.getIdFamiliaApuntador());
            try {
                h.forward(request, response);
            } catch (ServletException ex) {
                Logger.getLogger(TarryTPV.class.getName()).log(Level.SEVERE, null, ex);
            } catch (IOException ex) {
                Logger.getLogger(TarryTPV.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
    }

    /**
     * ALAN GONZALEZ SERVICIO PARA ELIMINAR CATEGORIA
     *
     * @param request
     * @param response
     * @param session
     */
    public void eliminaCategoria(HttpServletRequest request, HttpServletResponse response, HttpSession session) {
        TPVPrincipalDTO principal = (TPVPrincipalDTO) session.getAttribute("principalTPV");
        int idCategoria = Integer.parseInt(request.getParameter("idCategoria"));
        int index = Integer.parseInt(request.getParameter("index"));
        CatalogoProductosDAO catalogoProductosDAO = new CatalogoProductosDAO();
        switch (index) {
            case 1:
                String redireccion = "./TarryTPV?action=eliminaCategoria";
                String variableCero = "index=2";
                String variableUno = "idCategoria=" + idCategoria;
                session.setAttribute("tarryServiceDeleteRecord", redireccion);
                session.setAttribute("tarryVar0DeleteRecord", variableCero);
                session.setAttribute("tarryVar1DeleteRecord", variableUno);
                
                RequestDispatcher h = request.getRequestDispatcher("./TPV/popUpAvisoEliminar.jsp");
                try {
                    h.forward(request, response);
                } catch (ServletException ex) {
                    Logger.getLogger(TarryTPV.class.getName()).log(Level.SEVERE, null, ex);
                } catch (IOException ex) {
                    Logger.getLogger(TarryTPV.class.getName()).log(Level.SEVERE, null, ex);
                }
                break;
            case 2:
// ELIMINA LA CATEGORIA
                catalogoProductosDAO.eliminaCategoria(idCategoria);
// REDIRECCIONAA LAS CATEGORIAS DE LA FAMILIA
                RedireccionPOPUP redireccionPOP = new RedireccionPOPUP();
                RequestDispatcher i = request.getRequestDispatcher("./loading.jsp");
                redireccionPOP.setServicio("./TarryTPV?action=categoriasFamilia");
                redireccionPOP.setVariables("idFamilia=" + principal.getIdFamiliaApuntador());
                session.setAttribute("sistema", redireccionPOP);
                try {
                    i.forward(request, response);
                } catch (ServletException ex) {
                    Logger.getLogger(TarryTPV.class.getName()).log(Level.SEVERE, null, ex);
                } catch (IOException ex) {
                    Logger.getLogger(TarryTPV.class.getName()).log(Level.SEVERE, null, ex);
                }
                break;
        }
    }

    /**
     * ALAN GONZALEZ SERVICIO QUE MUESTRA TODOS LOS PRODUCTOS DE UNA CATEGORIA
     *
     * @param request
     * @param response
     * @param session
     */
    public void productosCategoria(HttpServletRequest request, HttpServletResponse response, HttpSession session) {
        TPVPrincipalDTO principal = (TPVPrincipalDTO) session.getAttribute("principalTPV");
        int idCatgoria = Integer.parseInt(request.getParameter("idCategoria"));
        CatalogoProductosDAO catalogoProductosDAO = new CatalogoProductosDAO();
        CatalogoProductosDTO catalogoProductosDTO = new CatalogoProductosDTO();
        Vector vProductosCategoria = catalogoProductosDAO.productosCategoria(idCatgoria);
        principal.setProductos(vProductosCategoria);
        session.setAttribute("principalTPV", principal);
        RequestDispatcher h = request.getRequestDispatcher("/TPV/productos.jsp");
        try {
            h.forward(request, response);
        } catch (ServletException ex) {
            Logger.getLogger(TarryTPV.class.getName()).log(Level.SEVERE, null, ex);
        } catch (IOException ex) {
            Logger.getLogger(TarryTPV.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    /**
     * ALAM GONZALEZ SERVICIO NUEVO PRODUCTO
     *
     * @param request
     * @param response
     * @param session
     */
    public void nuevoProducto(HttpServletRequest request, HttpServletResponse response, HttpSession session) {
        TPVPrincipalDTO principal = (TPVPrincipalDTO) session.getAttribute("principalTPV");
        principal.setTituloVistaCatalogo("PRODUCTOS");
        session.setAttribute("principalTPV", principal);
        RequestDispatcher h = request.getRequestDispatcher("/TPV/nuevoProducto.jsp");
        try {
            h.forward(request, response);
        } catch (ServletException ex) {
            Logger.getLogger(TarryTPV.class.getName()).log(Level.SEVERE, null, ex);
        } catch (IOException ex) {
            Logger.getLogger(TarryTPV.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    /**
     * ALAN GONZALEZ SERVICIO PARA LA EDICION D PRODUCTOS
     *
     * @param request
     * @param response
     * @param session
     */
    public void editaProducto(HttpServletRequest request, HttpServletResponse response, HttpSession session) {
        
    }

    /**
     * ALAN GONZALEZ SERVICIO PARA LA ELIMINACION DE UN PRODUCTO
     *
     * @param request
     * @param response
     * @param session
     */
    public void eliminaProducto(HttpServletRequest request, HttpServletResponse response, HttpSession session) {
        
    }
}
